package cn.calin.day05.demo17;
/*
如何知道一个父类引用的对象，本来是什么子类？

格式：
对象 instanceof
这将会得到一个Boolean值结果，也就是判断前面的对象能不能当作后面类型的实例
* */
public class Demo02Instanceof {
    public static void main(String[] args) {
        Animal animal=new Cat();
        animal.eat();//猫吃鱼

        //如果希望调用子类特有方法，需要用向下转型
        //判断一下animal本来是不是dog
        if(animal instanceof Dog){
            Dog dog =(Dog) animal;
            dog.watchHouse();
        }
        //判断一下animal本来是不是Cat
        if(animal instanceof Cat){
            Cat cat=(Cat) animal;
            cat.catchMouse();
        }
        giveMeAPet(new Cat());
    }
    public static void giveMeAPet(Animal animal){
        if(animal instanceof Dog){
            Dog dog =(Dog) animal;
            dog.watchHouse();
        }
        //判断一下animal本来是不是Cat
        if(animal instanceof Cat){
            Cat cat=(Cat) animal;
            cat.catchMouse();
        }
    }
}
